﻿using System;

namespace test_10_5_C_Sharp
{
    ////图书类
    //class Book { }

    ////抽象读者类Reader
    //abstract class Reader
    //{
    //    //抽象方法——借书
    //    public abstract void BorrowBook(Book b);
    //}

    ////学生读者类Student，继承于读者类Reader
    //class Student : Reader
    //{
    //    //重写借书方法
    //    public override void BorrowBook(Book b)
    //    {
    //        Console.WriteLine("学生借书，可借60天");
    //    }
    //}

    ////教师读者类Teacher，继承于读者类Reader
    //class Teacher : Reader
    //{
    //    //重写借书方法
    //    public override void BorrowBook(Book b)
    //    {
    //        Console.WriteLine("老师借书，可借90天");
    //    }
    //}

    ////启动类
    //class Program
    //{
    //    static void Main(string[] args)
    //    {
    //        Console.WriteLine("我是叶豪方，这是我的上机作业8");
    //        Book b = new Book();
    //        Reader r = new Student();
    //        r.BorrowBook(b);//学生借书
    //        r = new Teacher();
    //        r.BorrowBook(b);//老师借书
    //    }
    //}

    ////图书类
    //class Book { }

    ////读者接口 IReader
    //interface IReader
    //{
    //    void BorrowBook(Book b);//借书
    //    void ReturnBook(Book b);//还书
    //    void ReNewBook(Book b);//续借
    //}

    ////学生读者类Student，实现读者接口IReader
    //class Student : IReader
    //{
    //    public void BorrowBook(Book b)
    //    {
    //        Console.WriteLine("学生借书");
    //    }
    //    public void ReturnBook(Book b)
    //    {
    //        Console.WriteLine("学生还书");
    //    }
    //    public void ReNewBook(Book b)
    //    {
    //        Console.WriteLine("学生续借图书");
    //    }
    //}

    ////启动类
    //class Program
    //{
    //    static void Main(string[] args)
    //    {
    //        Console.WriteLine("我是叶豪方，这是我的上机作业8");
    //        Book b = new Book();
    //        Student s = new Student();
    //        s.BorrowBook(b);//借书
    //        s.ReturnBook(b);//还书
    //        s.ReNewBook(b);//续借
    //    }
    //}

    //public abstract class shape
    //{
    //    public abstract void area();//计算面积
    //    public abstract void setdata(int sum);//输出形状大小
    //}

    //class triangle : shape//三角形类继承
    //{
    //    public static int d = 5;//底
    //    public static int h = 10;//高
    //    public static int s = (d * h) / 2;//面积
    //    public override void area()
    //    {
    //        Console.WriteLine("triangle:三角形面积为{0}  ", s);

    //    }

    //    public override void setdata(int sum)
    //    {
    //        Console.WriteLine("三角形周长为{0}", sum * 3);
    //    }

    //}

    //class rect : shape//矩形类继承
    //{
    //    public static int k = 6;//宽
    //    public static int c = 10;//长
    //    public static int s = c * k;//面积
    //    public override void area()
    //    {
    //        Console.WriteLine("rect:矩形面积为{0}  ", s);
    //    }

    //    public override void setdata(int sum)
    //    {
    //        Console.WriteLine("矩形周长为{0}", sum * 4);//为正方形
    //    }
    //}


    //class circle : shape//圆形类继承
    //{
    //    public static double π = 3.14;//π
    //    public static int r = 7;//半径
    //    public static double s = r * r * π;//面积
    //    public override void area()
    //    {

    //        Console.WriteLine("circle:圆面积为{0}  ", s);
    //    }

    //    public override void setdata(int sum)
    //    {
    //        Console.WriteLine("圆周长为{0}", 2 * π * sum);
    //    }
    //}

    //class carea
    //{
    //    public static double s = (triangle.s) + (rect.s) + (circle.s);
    //    public carea()//构造函数
    //    {
    //        shape s = new triangle();
    //        s.setdata(5);//三角形边长
    //        s = new rect();
    //        s.setdata(6);//矩形边长
    //        s = new circle();
    //        s.setdata(7);//圆形半径
    //    }

    //}

    //class program
    //{
    //    public static void Main(string[] args)
    //    {
    //        Console.WriteLine("我是叶豪方，这是我的上机作业8");
    //        shape s = new triangle();
    //        s.area();
    //        s = new rect();
    //        s.area();
    //        s = new circle();
    //        s.area();
    //        Console.WriteLine();
    //        carea ca = new carea();
    //        Console.WriteLine("\n总面积为{0}", carea.s);

    //    }
    //}

    interface IShape
    {
        public abstract void Area();//计算面积
        public abstract void SetData(int sum);//输出形状大小
    }

    class Triangle : IShape//三角形类继承
    {
        public static int d = 5;//底
        public static int h = 10;//高
        public static int S = (d * h) / 2;//面积
        public void Area()
        {
            Console.WriteLine("Triangle:三角形面积为{0}  ", S);

        }

        public void SetData(int sum)
        {
            Console.WriteLine("三角形周长为{0}", sum * 3);
        }

    }

    class Rect : IShape//矩形类继承
    {
        public static int k = 6;//宽
        public static int c = 10;//长
        public static int S = c * k;//面积
        public void Area()
        {
            Console.WriteLine("Rect:矩形面积为{0}  ", S);
        }

        public void SetData(int sum)
        {
            Console.WriteLine("矩形周长为{0}", sum * 4);//为正方形
        }
    }


    class Circle : IShape//圆形类继承
    {
        public static double Π = 3.14;//Π
        public static int r = 7;//半径
        public static double S = r * r * Π;//面积
        public void Area()
        {

            Console.WriteLine("Circle:圆面积为{0}  ", S);
        }

        public void SetData(int sum)
        {
            Console.WriteLine("圆周长为{0}", 2 * Π * sum);
        }
    }

    class CArea
    {
        public static double S = (Triangle.S) + (Rect.S) + (Circle.S);
        public CArea()
        {
            IShape s = new Triangle();
            s.SetData(5);//三角形边长
            s = new Rect();
            s.SetData(6);//矩形边长
            s = new Circle();
            s.SetData(7);//圆形半径
        }

    }

    class Program
    {
        public static void Main(string[] args)
        {
            Console.WriteLine("我是叶豪方，这是我的上机作业8");
            IShape s = new Triangle();
            s.Area();
            s = new Rect();
            s.Area();
            s = new Circle();
            s.Area();
            Console.WriteLine();
            CArea ca = new CArea();
            Console.WriteLine("\n总面积为{0}", CArea.S);

        }
    }
}
